# troop_unit.gd
class_name TroopUnit extends RefCounted

# ======================================================
# 独立兵种单位数据类
# 包含类型、数量和场景路径信息
# ======================================================

# 单位类型（参考TroopType枚举）
var type: int
# 单位数量（>=0）
var count: int
# 场景文件路径
var scene_path: String
var icon_path: String

# 构造函数
# @param t: 单位类型（TroopType）
# @param c: 初始数量
# @param p: 场景文件路径（可选，默认根据类型自动设置）
func _init(t: int, c: int, s_p: String = "", i_p: String = "") -> void:
	type = t
	count = c
	scene_path = s_p if s_p != "" else _get_default_scene_path(t)
	icon_path = i_p
# 获取默认场景路径
# @param type: 兵种类型
# @return: 默认场景路径
static func _get_default_scene_path(_type: int) -> String:
	match _type:
		GameConstant.TROOP_TYPE.SOLDIER:
			return "res://game/01_scenes/characters/ally/soldier/soldier.tscn"
		GameConstant.TROOP_TYPE.ARCHER:
			return "res://game/01_scenes/characters/ally/archer/archer.tscn"
		GameConstant.TROOP_TYPE.MAGE:
			return "res://game/01_scenes/characters/ally/mage/mage.tscn"
		GameConstant.TROOP_TYPE.HEALER:
			return "res://game/01_scenes/characters/ally/healer/healer.tscn"
		GameConstant.TROOP_TYPE.SUMMONER:
			return "res://game/01_scenes/characters/ally/summoner/summoner.tscn"
		_:
			return ""

# 序列化为字典
# @return: 包含所有数据的字典
func to_dict() -> Dictionary:
	return {
		"type": type,
		"count": count,
		"scene_path": scene_path,
		"icon_path": icon_path
	}

# 从字典反序列化
# @param data: 包含单位数据的字典
# @return: 新TroopUnit实例
static func from_dict(data: Dictionary) -> TroopUnit:
	return TroopUnit.new(
		data.get("type", GameConstant.TROOP_TYPE.SOLDIER),
		data.get("count", 0),
		data.get("scene_path", ""),
		data.get("icon_path", "")
	)
